package org.example.JDBC;

import com.mysql.jdbc.jdbc2.optional.MysqlDataSource;

import javax.sql.DataSource;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Scanner;

/**
 * Created with IntelliJ IDEA.
 * Description:
 * User:Lenovo
 * Date:2022-04-09
 * Time:14:37
 */
public class Select {
    public static void main(String[] args) throws SQLException {
        //1.创建数据源
        DataSource dataSource = new MysqlDataSource();
        //设置数据库所在的地址
        ((MysqlDataSource) dataSource).setURL("jdbc:mysql://127.0.0.1:3306/zyp?characterEncoding=utf8&useSSL=false");
        //设置登录数据库的用户名
        ((MysqlDataSource) dataSource).setUser("root");
        //设置登录数据库的密码
        ((MysqlDataSource) dataSource).setPassword("123456");
        //2.让代码和数据库服务器建立连接
        Connection connection = dataSource.getConnection();
        //3.用户输入查找条件
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入你要查找的id:");
        int abl = scanner.nextInt();
        //4.拼装sql语句
        String sql = "select * from student1 where id = ?";
        PreparedStatement statement = connection.prepareStatement(sql);
        statement.setInt(1,abl);
        System.out.println("statement = " + statement);
        //5.执行sql
        //  对于查询操作,就需要使用executeQuery了
        //  查询操作返回的不是一个int,而是一个"临时表"
        //  使用ResultSet表示这个表
        ResultSet resultSet = statement.executeQuery();
        //  遍历结果集合(返回的临时表),先获取到每一行,再读取这一行的若干列
        //  next方法表示获取到一行记录,同时把光标往后移动一行
        // 如果遍历到标的结束位置,此处的next直接就返回false
        while (resultSet.next()){
            int id = resultSet.getInt("id");
            String name = resultSet.getString("name");
            System.out.println("id=" + id +","+"name=" + name);
        }
        //6.回收释放资源
        scanner.close();
        statement.close();
        connection.close();
    }
}
